#ifndef WIDGET_H
#define WIDGET_H

#include<QWidget>
#include<QKeyEvent>
#include<QTimer>
#include<QPaintEvent>
#include<QPainter>
#include<QColor>
#include<QSoundEffect>
#include<QLabel>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

enum Direct{
    dir_left,
    dir_right,
    dir_up,
    dir_down
};

class Widget : public QWidget
{
    Q_OBJECT
//0.蛇的表示
//
//1.按键处理
//2.使用定时器
    //2.1关联信号槽
    //2.2启动定时器
    //2.3实现对应的超时处理函数
//3.渲染


public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    int time=200;//超时时间间隔 毫秒
    int grade=0;
    QString text1= "得分：%1";
    QString text2=text1.arg(grade);
    QString text3= "你的最终得分为：%1";
    QString overtext="勉强不是菜狗";
protected:
    void paintEvent(QPaintEvent*Event);


    void deleteLast();
    void addTop();
    void addDown();
    void addLeft();
    void addRight();
    //按键处理
    void keyPressEvent(QKeyEvent*event);
    void addNewReward();
    void defenkuang();
    //得分
    QLabel *Grade=new QLabel(this);

public:
    bool contact();
private:
    Ui::Widget *ui;
    int moveFlag=dir_up;
    bool gameStart=false;
    //蛇
    QList<QRectF>snake;
    //奖品
    QRectF rewardNode;
    //小方块的宽高
    int node_Width=20;
    int node_Height=20;

    QColor  SnakeOutColor=Qt::darkBlue;
    QColor  SnakeInColor=Qt::cyan;
    //定时器
    QTimer *timer;
    //播放器
    QSoundEffect*sound=new QSoundEffect(this);
protected slots:
    void timeout();
};
#endif // WIDGET_H
